﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ECommerce.Model.Productos.Precios
{
    public class Precio : Objeto
    {
        private ECommerce.Model.Productos.Precios.TipoPrecio tipoPrecio;
        public ECommerce.Model.Productos.Precios.TipoPrecio TipoPrecio
        {
            get { return tipoPrecio; }
            set { tipoPrecio = value; }
        }
        private ECommerce.Model.Productos.Precios.Moneda moneda;
        public ECommerce.Model.Productos.Precios.Moneda Moneda
        {
            get { return moneda; }
            set { moneda = value; }
        }
        private double valor;
        public double Valor
        {
            get { return valor; }
            set { valor = value; }
        }
        private Int32 idProducto;
        public Int32 IdProducto
        {
            get { return idProducto; }
            set { idProducto = value; }
        }
        public override void Load(System.Data.DataRow dr)
        {
            base.Load(dr);
            ECommerce.Factory.Productos.Precios.Precio.Load(this, dr);
            ECommerce.DAO.Cache.Productos.Precios.Precio.SetPrecio(this);
        }
        public override void Load(int ident)
        {
            base.Load(ident);
            this.Load(ECommerce.DAO.Cache.Productos.Precios.Precio.GetPrecioById(ident));
            if (this.Id == 0)
            { 
                this.Load(ECommerce.DAO.SQL.Productos.Precios.Precio.GetPrecioById(ident));
                ECommerce.DAO.Cache.Productos.Precios.Precio.SetPrecio(this);
            }
        }
        public void Load(ECommerce.Model.Productos.Precios.Precio Precio)
        {
            if (Precio != null)
            { 
                base.Load(Precio);
                this.Moneda = new Moneda();
                this.Moneda.Load(Precio.Moneda.Id);
                this.TipoPrecio = new TipoPrecio();
                this.TipoPrecio.Load(Precio.TipoPrecio.Id);
                this.Valor = Precio.Valor;
            }
        }
        public override void Save()
        {
            base.Save();
            this.Id = ECommerce.DAO.SQL.Productos.Precios.Precio.SetPrecio(this);
            this.Id = ECommerce.DAO.Cache.Productos.Precios.Precio.SetPrecio(this);
        }
        public override string ToString()
        {
            return this.Moneda.Simbolo + " " + this.Valor.ToString("f") + "(" + this.TipoPrecio.ToString() + ")";
        }
        public override string Ruta
        {
            get
            {
                return base.Ruta;
            }
        }
    }
}
